package cn.lcsjsxy.yxz.day.Practice.Reflection;

//判断类的类型
public class Judgment_class {
    public class Student implements java.io.Serializable{
        private String name;
        private int age;
        //构造器
        public Student (){

        }
        public Student(String name,int age){
            this.name = name;
            this.age = age;
        }
        @Override
        public String toString(){
            return "Student{name='" + name + "',age=" + age + "}";
        }
    }
    public static void main(String[] args) {

        // 定义一个自定义类 Student（包含属性 name、age，无参 / 有参构造器，toString 方法），
        // 通过反射判断：
        // 该类是否为 “普通类”（非接口、非枚举、非数组）。
        // 该类是否有父类，若有则打印父类全类名。
        // 该类是否实现了 java.io.Serializable 接口。

        Class<?> clazz = Student.class;
        //判断该类是否为 “普通类”（非接口、非枚举、非数组）
        boolean isOrdinaryClass = !clazz.isInterface() && !clazz.isEnum() && !clazz.isArray();
        System.out.println("是否为普通类: " + isOrdinaryClass);
        //判断该类是否有父类，若有则打印父类全类名。
        Class<?> superClass = clazz.getSuperclass();
        if (superClass != null){
            System.out.println("父类全类: " + superClass.getName());
        }else {
            System.out.println("该类没有复类");
        }
        //判断该类是否实现了 java.io.Serializable 接口。
        boolean isSerializable = java.io.Serializable.class.isAssignableFrom(clazz);
        System.out.println("是否实现java.io.Serializable接口: " + isSerializable);

    }
}